# encoding:utf-8
'''
@author : xaing
@time : 2019/4/4 10:58
@地址 : 广州
@作用 : 文件相关的工具类
@结果 :
'''

import os
from version1 import common, logUtils as log



def getFileInfo(file):
    '''
    获取文件名和文件后缀
    :param file: 文件路径 e:/1.txt
    :return: 字典：{'name': 'E:\\临时\\1', 'suffix': '.txt'}
    '''
    fileName = os.path.splitext(file)[0]
    suffix = os.path.splitext(file)[-1]
    return {"name": fileName, "suffix": suffix}


def isFile(path):
    '''
    判断是否文件
    :param path: 路径
    :return: false 是目录 True 是文件
    '''
    if os.path.isdir(path):
        return False
    elif os.path.isfile(path):
        return True
    else:
        log.outErrorLog("这是一个特殊的文件，可能是socket,FIFO,device fileExtend")
        return False


def isFileManyCheck(path):
    '''
    判断是不是文件，多重校验
    :param path: 文件的路径
    :return: false 是目录 True 是文件
    '''
    if common.checkNull(path):
        raise Exception("路径不能为空")

    if not os.path.exists(path):
        # 不存在
        raise Exception("路径不存在")

    return isFile(path)


def isNullFile(filePath):
    '''
    判断文件夹是否是空的
    :param filePath: 文件夹路径
    :return: true 是空的 false 不是空的
    '''
    if isFile(filePath):
        raise Exception("这是个文件:" + common.outStr(filePath))
    listFile = os.listdir(filePath)
    if len(listFile) == 0:
        return True
    else:
        return False


def writeFile(filePath, content):
    '''
    追加文件到指定文件中，常用于对txt文件进行追加信息
    :param fielPath: 文件地址 e:/temp/1.txt
    :param content: 要写的文件内容
    :return:
    '''
    # a就是追加 w+写读（会覆盖之前的）  可以指定编码，也可以不指定
    # f = open(fielPath, 'a', encoding='utf-8')
    # f.write(content)
    # f.write("\n")  # 换行
    # f.close()
    with open(filePath, 'a') as f:
        f.write(content)
        # 换行
        f.write("\n")



def getLastPath(path):
    '''
    返回多重路径的最后一重
    :param path: 路径 e:/s/co
    :return: 会返回 /co
    '''
    if common.checkNull(path):
        raise Exception("路径不能为空")

    index = path.rfind("/")
    if index == -1:
        raise Exception("不存在多重路径或路径非法，非 / 分隔")

    return path[index : len(path)]

